SpringBoot 项目搭建基本流程

模块

  • 一般有 Lombok, Spring Security, Spring Web, MySQL Driver;

  • 可选有 Spring Data Reactive Redis, Thymeleaf 等;

  • 删除 .mvn, HELP.md, .gitignore, mvnw, mvnw.cmd;

  • 删除 application.properties ,换成 application.yml ;

    • 根据自己实际情况添加 application 包,在里面添加 application-XXXXX.yml 文件;
    • 一般会有开发 (dev), 测试 (test), 上线 (prod);
    • 其他根据自己另行添加,如 mybatis, druid, security;
  • 在 pom.xml 文件里添加上如下常用依赖,并同步 Maven ;

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.1.23</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.23</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.62</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.5</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

IDEA 侧栏连接数据库

  • 在 application-dev.yml 里面加上数据库连接的代码,以 mysql 为例:
spring:
  datasource:
    username: root
    password: tinysnow;
    url: jdbc:mysql://localhost:3306/?useUnicode=true
      &characterEncoding=utf-8&allowPublicKeyRetrieval=true&useSSL=false
    driver-class-name: com.mysql.cj.jdbc.Driver
  • 在项目目录下 (com.tinysnow.xxxxxx) 下建包 bean , service , controller , dao , config , utils , mapper 等,在 resources 路径下建立 mappers 包,准备整合 mybatis ;
  • 启动和测试;

Druid 数据库连接池相关

  • 开始使用
# 注意空格 也可以将这个另开一个配置文件编写,例如 application-druid.yml
# 另外编写则需要在主配置文件中激活,激活方式如下:
#spring: 
#  profiles:
#    active: druid,mybatis
spring: 
  datasuorce: 
    type: com.alibaba.druid.pool.DruidDataSource
  • 在 Test 类里面加上以下内容看是否输出 class com.alibaba.druid.pool.DruidDataSource
@Autowired
DataSource dataSource;

@Test
void contextLoads() {
    System.out.println(dataSource.getClass());
}

Druid 额外参考配置

# 注意,以下所有配置均需要在 druid: 下一级编写,即
#spring: 
#  datasuorce:
#    druid: 
initialSize: 5
minIdle: 5
maxActive: 20
maxWait: 60000
timeBetweenEvictionRunsMillis: 60000
minEvictableIdleTimeMillis: 300000
testWhileIdle: true
testOnBorrow: false
testOnReturn: false
poolPreparedStatements: true
maxOpenPreparedStatements: 20
asyncInit: true

# 配置监控统计拦截的 filters : stat:监控统计、log4j:日志记录、wall:防御sql注入
# 如果允许时报错 java.lang.ClassNotFoundException: org.apache.log4j.Priority
# 则导入 log4j 依赖即可, Maven 地址: https://mvnrepository.com/artifact/log4j/log4j

filters: stat,wall,log4j
MaxPoolPreparedStatementPerConnectionSize: 20
useGlobalDataSourceStat: true
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=500

Mybatis 相关

  • 建立 application-mybatis.yml 配置文件,内容如下,可拓展:
mybatis:
  # 此路径为编写的 xml 文件的路径
  mapper-locations: classpath:mybatis/mappers/*.xml
  # 实体类的别名包设置
  type-aliases-package: com.tinysnow.bean
  • 在 resources 目录下建立 mybatis/mappers 包
  • 在该包下编写实际操作数据库的 xml 代码
  • 在主启动类上面加上注解 @MapperScan("com.tinysnow.mapper") 括号里为 mybatis 的操作接口的路径
  • 在该路径下建立操作接口,并在每个接口上面添加 @Repository 注解,使其被 Spring 托管